package recursivefunc

import (
	"fmt"
	"io/ioutil"
	"path/filepath"
)

//使用panic改造简化错误处理

//该函数调用recover并存储它返回的panic值
func ReportPanic() {
	p := recover()
	if p == nil {
		//如果recover返回nil，则没有panic，什么也不做
		return
	}
	//否则获取底层的error值，打印
	err, ok := p.(error)
	if ok {
		fmt.Println(err)
	}
}

func ScanDirectory(path string) error { //path表示要扫描的路径
	fmt.Println(path)                  //打印当前目录
	files, err := ioutil.ReadDir(path) //获取包含目录内容的切片
	if err != nil {
		// return err
		panic(err)
	}

	for _, file := range files {
		filePath := filepath.Join(path, file.Name()) //用分隔符将路径目录和文件名连接起来
		if file.IsDir() {                            //目录
			/* err := ScanDirectory(filePath) //递归查询
			if err != nil {
				return err
			} */

			ScanDirectory(filePath)
		} else { //文件
			fmt.Println(filePath)
		}
	}

	return nil
}
